From: Chao Gao Date: Wed, 1 Mar 2017 09:28:35 +0000 (+0100) Subject: passthrough: reject self-(de)assignment of devices X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~2629 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=2c17e1836d46203f02f0ad699465500554575aef;p=xen.git passthrough: reject self-(de)assignment of devices That is to say, don't support a domain assigns a device to itself or detachs a device from itself. Signed-off-by: Chao Gao Acked-by: Jan Beulich --- diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c index 338d6b4f37..beddd42701 100644 --- a/xen/drivers/passthrough/pci.c +++ b/xen/drivers/passthrough/pci.c @@ -1603,6 +1603,13 @@ int iommu_do_pci_domctl( break; case XEN_DOMCTL_assign_device: + /* Don't support self-assignment of devices. */ + if ( d == current->domain ) + { + ret = -EINVAL; + break; + } + ret = -ENODEV; if ( domctl->u.assign_device.dev != XEN_DOMCTL_DEV_PCI ) break; @@ -1643,6 +1650,13 @@ int iommu_do_pci_domctl( break; case XEN_DOMCTL_deassign_device: + /* Don't support self-deassignment of devices. */ + if ( d == current->domain ) + { + ret = -EINVAL; + break; + } + ret = -ENODEV; if ( domctl->u.assign_device.dev != XEN_DOMCTL_DEV_PCI ) break;